package com.veterinaria.actions;

import java.util.ArrayList;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import com.veterinaria.bean.ClienteBean;
import com.veterinaria.bean.DistritoBean;
import com.veterinaria.bean.PacienteBean;
import com.veterinaria.bean.ProvinciaBean;
import com.veterinaria.bean.TipoClienteBean;
import com.veterinaria.services.ClienteImplements;
import com.veterinaria.services.DistritoImplements;
import com.veterinaria.services.PacienteImplements;
import com.veterinaria.services.ProvinciaImplements;
import com.veterinaria.services.TipoClienteImplements;

@ParentPackage(value="ProyVeterinaria")
public class ClienteAction extends ActionSupport{

	private static final long serialVersionUID = 1L;

	private ClienteImplements clienteImp = new ClienteImplements();
	private ProvinciaImplements provinciaImp = new ProvinciaImplements();
	private DistritoImplements distritoImp = new DistritoImplements();
	private TipoClienteImplements tiposImp = new TipoClienteImplements();
	private PacienteImplements pacienteImp=new PacienteImplements();
	
	private ArrayList<TipoClienteBean> listaTipos;
	private ArrayList<ClienteBean> listaClientes;
	private ArrayList<ProvinciaBean> listaProvincias;
	private ArrayList<DistritoBean> listaDistrito;
	private ArrayList<PacienteBean> listaPacientesCliente;
	
	private ClienteBean parametroCliente = new ClienteBean();
	private ClienteBean clienteBean = new ClienteBean();
	private PacienteBean pacienteBeanCliente=new PacienteBean();
	
	private static String accionGuardar=null;
	private boolean estadoDNI;	
	
    @Actions({
    	@Action( value="AListarCliente",results={@Result(name="success",location="T_listaCliente",type="tiles")}),
    	@Action( value="JSONListarCliente",results={@Result(name="success",type="json")})
    	})	
	public String listarCliente() throws Exception{
		listaClientes=clienteImp.listarClientes(parametroCliente);
		return SUCCESS;
	}

	@Action( value="AVerCliente",results={@Result(name="success",location="T_mantenimientoCliente",type="tiles")})
	public String obtenerCliente() throws Exception{
		clienteBean=clienteImp.obtenerCliente(parametroCliente);
		estadoDNI=true;
		pacienteBeanCliente=new PacienteBean();
		pacienteBeanCliente.setClienteDni(parametroCliente.getDni());
		System.out.println("parametroCliente.getDni()::"+parametroCliente.getDni());
		listaPacientesCliente=pacienteImp.listarPacienteNombre(pacienteBeanCliente);
		accionGuardar="Actualizar";
		return SUCCESS;
	}
	
	@Action( value="ANuevoCliente",results={@Result(name="success",location="T_mantenimientoCliente",type="tiles")})
	public String nuevoCliente() throws Exception{
		clienteBean=new ClienteBean();
		accionGuardar="Insertar";
		estadoDNI=false;
		return SUCCESS;
	}
	
	@Action( value="AListarClientes",results={@Result(name="success",location="T_listaCliente",type="tiles")})
	public String listasCliente() throws Exception{
		return SUCCESS;
	}
	
	@Action( value="AGrabaCliente",results={@Result(name="success",type="tiles",location="T_listaCliente")})	
	public String grabaCliente() throws Exception{
		clienteImp.grabarCliente(clienteBean);
		return SUCCESS;
	}
	
	@Action( value="AModificaCliente",results={@Result(name="success",type="tiles",location="T_listaCliente")})	
	public String modificarCliente() throws Exception{
		clienteImp.modificarCliente(clienteBean);
		return SUCCESS;
	}
	
	@Action( value="AEliminaCliente",results={@Result(name="success",type="tiles",location="T_listaCliente")})	
	public String eliminarCliente() throws Exception{
		clienteImp.eliminarCliente(parametroCliente);
		listaClientes = clienteImp.listarClientes(clienteBean);
		return SUCCESS;
	}
	
	@Action( value="JSONListaProvincia",results={@Result(name="success",type="json")})
	public String listaProvincias() throws Exception{
		listaProvincias=provinciaImp.listarProvincias();
		return SUCCESS;
	}
	
	@Action( value="JSONListaDistrito",results={@Result(name="success",type="json")})
	public String cargarDistrito() throws Exception{
		System.out.println("entra a listaDistrito");
		System.out.println(clienteBean.getCodProvincia());
		if(clienteBean.getCodProvincia() == null)
			listaDistrito=distritoImp.listarDistritos("1");
		else listaDistrito=distritoImp.listarDistritos(clienteBean.getCodProvincia());
		return SUCCESS;
	}
	
	@Action( value="JSONListaTipos",results={@Result(name="success",type="json")})
	public String cargarTipos() throws Exception{
		setListaTipos(tiposImp.listarTipos());
		return SUCCESS;
	}
	
	
	@Action( value="AGuardarCliente",results={@Result(name="success",location="T_listaCliente",type="tiles")})
	public String guardarCliente() throws Exception{
		System.out.println("ACCION GUARDAR::"+accionGuardar);
		if(accionGuardar.equals("Insertar")){
			System.out.println("ENTRO A INSERTAR");
			System.out.println("NOMBRE CLIENTE::"+clienteBean.getNomCli());
			clienteImp.grabarCliente(clienteBean);
		}
		
        if(accionGuardar.equals("Actualizar")){
        	System.out.println("ENTRO A ACTUALIZAR");
			clienteImp.modificarCliente(clienteBean);
		}
        listaClientes=clienteImp.listarClientes(parametroCliente);		
		return SUCCESS;
	}
	
	@Action( value="AIrCredito",results={@Result(name="success",location="T_listaCredito",type="tiles")})
	public String temporalIrCredito() throws Exception{
		return SUCCESS;
	}
	
	public ArrayList<ClienteBean> getListaClientes() {
		return listaClientes;
	}

	public void setListaClientes(ArrayList<ClienteBean> listaClientes) {
		this.listaClientes = listaClientes;
	}

	public ClienteBean getParametroCliente() {
		return parametroCliente;
	}

	public void setParametroCliente(ClienteBean parametroCliente) {
		this.parametroCliente = parametroCliente;
	}

	public ClienteBean getClienteBean() {
		return clienteBean;
	}

	public void setClienteBean(ClienteBean clienteBean) {
		this.clienteBean = clienteBean;
	}

	public ArrayList<ProvinciaBean> getListaProvincias() {
		return listaProvincias;
	}

	public void setListaProvincias(ArrayList<ProvinciaBean> listaProvincias) {
		this.listaProvincias = listaProvincias;
	}

	public ArrayList<DistritoBean> getListaDistrito() {
		return listaDistrito;
	}

	public void setListaDistrito(ArrayList<DistritoBean> listaDistrito) {
		this.listaDistrito = listaDistrito;
	}

	public ArrayList<TipoClienteBean> getListaTipos() {
		return listaTipos;
	}

	public void setListaTipos(ArrayList<TipoClienteBean> listaTipos) {
		this.listaTipos = listaTipos;
	}

	public boolean isEstadoDNI() {
		return estadoDNI;
	}

	public void setEstadoDNI(boolean estadoDNI) {
		this.estadoDNI = estadoDNI;
	}

	public ArrayList<PacienteBean> getListaPacientesCliente() {
		return listaPacientesCliente;
	}

	public void setListaPacientesCliente(
			ArrayList<PacienteBean> listaPacientesCliente) {
		this.listaPacientesCliente = listaPacientesCliente;
	}
	
}